home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 9675 / 9675.xpi / chrome / content / simpletimer-fileIO.js < prev    next >
Text File  |  2009-07-29  |  4KB  |  133 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Initial Developer of the Original Code is
  15.  *   MonkeeSage
  16.  *
  17.  * Contributor(s):
  18.  *   George Bradt
  19.  *
  20.  * Alternatively, the contents of this file may be used under the terms of
  21.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  22.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  23.  * in which case the provisions of the GPL or the LGPL are applicable instead
  24.  * of those above. If you wish to allow use of your version of this file only
  25.  * under the terms of either the GPL or the LGPL, and not to allow others to
  26.  * use your version of this file under the terms of the MPL, indicate your
  27.  * decision by deleting the provisions above and replace them with the notice
  28.  * and other provisions required by the GPL or the LGPL. If you do not delete
  29.  * the provisions above, a recipient may use your version of this file under
  30.  * the terms of any one of the MPL, the GPL or the LGPL.
  31.  *
  32.  * ***** END LICENSE BLOCK ***** */
  33.  
  34. var SimpleTimerFileIO = {
  35.     localfileCID: "@mozilla.org/file/local;1",
  36.     localfileIID: Components.interfaces.nsILocalFile,
  37.  
  38.     finstreamCID: "@mozilla.org/network/file-input-stream;1",
  39.     finstreamIID: Components.interfaces.nsIFileInputStream,
  40.  
  41.     foutstreamCID: "@mozilla.org/network/file-output-stream;1",
  42.     foutstreamIID: Components.interfaces.nsIFileOutputStream,
  43.  
  44.     cinstreamCID: "@mozilla.org/intl/converter-input-stream;1",
  45.     cinstreamIID: Components.interfaces.nsIConverterInputStream,
  46.  
  47.     coutstreamCID: "@mozilla.org/intl/converter-output-stream;1",
  48.     coutstreamIID: Components.interfaces.nsIConverterOutputStream,
  49.  
  50.     open: function(path) {
  51.         try {
  52.             var file = Components.classes[this.localfileCID].
  53.                     createInstance(this.localfileIID);
  54.  
  55.             file.initWithPath(path);
  56.             return file;
  57.         }
  58.         catch(e) {
  59.             return false;
  60.         }
  61.     },
  62.  
  63.     read: function(file) {
  64.         try {
  65.             var data = "";
  66.             var fiStream = Components.classes[this.finstreamCID].
  67.                     createInstance(this.finstreamIID);
  68.             var ciStream = Components.classes[this.cinstreamCID].
  69.                     createInstance(this.cinstreamIID);
  70.  
  71.             fiStream.init(file, -1, 0, 0);
  72.             ciStream.init(fiStream, "UTF-8", 0, 0); // 3rd parm, use default buffer size of 8K.
  73.  
  74.             var str = {};
  75.  
  76.             while ( ciStream.readString(-1, str) !== 0 ) {
  77.                 // Read the stream in 8K chunks.
  78.                 data += str.value;
  79.             }
  80.  
  81.             // This also closes fiStream.
  82.             ciStream.close();
  83.  
  84.             return data;
  85.         }
  86.         catch(e) {
  87.             return false;
  88.         }
  89.     },
  90.  
  91.     write: function(file, data, mode) {
  92.         try {
  93.             var foStream = Components.classes[this.foutstreamCID].
  94.                     createInstance(this.foutstreamIID);
  95.             var coStream = Components.classes[this.coutstreamCID].
  96.                     createInstance(this.coutstreamIID);
  97.             var flags = 0x02 | 0x08 | 0x20; // wronly | create | truncate
  98.  
  99.             if ( mode === "a" ) {
  100.                 flags = 0x02 | 0x10; // wronly | append
  101.             }
  102.  
  103.             foStream.init(file, flags, 0664, 0);
  104.             coStream.init(foStream, "UTF-8", 0, 0);
  105.  
  106.             coStream.writeString(data);
  107.  
  108.             // This also closes foStream.
  109.             coStream.close();
  110.  
  111.             return true;
  112.         }
  113.         catch(e) {
  114.             return false;
  115.         }
  116.     },
  117.  
  118.     create: function(file) {
  119.         try {
  120.             file.create(0x00, 0664);
  121.             return true;
  122.         }
  123.         catch(e) {
  124.             return false;
  125.         }
  126.     },
  127.  
  128.     // Debug messages to console.
  129.  
  130.     debug: function(aMsg) {
  131.         setTimeout(function() { throw new Error("[debug] " + aMsg); }, 0);
  132.     }
  133. };